手机支付平台付款码分析

您所在的位置:网站首页 云闪付 付款 手机支付平台付款码分析

手机支付平台付款码分析

2024-07-16 02:12| 来源: 网络整理| 查看: 265

一、背景:

      随着手机付款的流行,人们出门已经很少带现金了,或者只带一点儿以备不时之需。手机付款基本有两种形式,要么扫对方的二维码自己输入金额。要么展示付款码,让对方用扫码枪扫。作为软件工程师的我,虽然不从事支付软件开发。但是每次在超市购物付款时对展示付款码扫码的方式很好奇。不就是一连串阿拉伯数字,基本一分钟自动变一次嘛。就这样被扫码枪扫一扫,立即就收到扣款消息。我相信商家能推出这种方式肯定认为是安全的,但是这种安全性在数学上或密码学上是如何体现的,还是很好奇。最近一个月看了些密码学的知识,并观察自己手机上付款码的变化规律,做了如下分析。

二、调查

笔者对自己手机上三种支付方式的条形付款码数字分别连续采集四个,发现如下规律:

1. 微信和支付宝的条码十六进制有效数字有15个,云闪付的条码十六进制有效数字有16个

2. 如果把三个平台的条码十六进制有效数字都按16个计算,那么微信的前两个数字固定是01, 支付宝03, 云闪付56

 

三、条码中包含的信息:

扫码枪把条码数字传递给服务器就能扣款,说明条码种至少包含4个信息

1. 支付平台:即手机持有者到底打开的是微信,支付宝,云闪付,还是别的。。。

2. 用户ID:即手机持有者到底是谁?

3. 支付方式:到底从浦发,招行,还是平台上的余额,花呗...

4. 支付密码

这四个信息中,支付平台是固定且公开的,如调查结果。用户ID是固定的(从在支付App上注册时就分配好,与手机号绑定)支付方式是有限且少量的(例如,用"0"代表浦发,"1"代表招行)只有支付密码每隔1分钟变化一次。所以,我们看到每次打开付款码时数字都不一样,就是里面有新的支付密码,而这才是支付安全的关键。

四、各信息的长度:

1. 支付平台:2个十六进制字符,最多可以表达0xFF+1=256个支付平台,目前在中国最最流行的也就支付宝和微信两家,加上其他国有大型银行,即未来的新支付平台,也完全够用了。

2. 用户ID:8个十六进制字符0xFFFFFFFF = ‭4294967295‬,即42.9亿。 9个十六进制字符0xF,FFFF,FFFF=‭68719476735‬,即687.1亿。目前全球总人口不到80亿,从统计学上【全球一半的人口都选择某一个支付平台】这件事情几乎不可能,所以8个十六进制字符足够了。

3. 支付方式:1个十六进制字符0xF=15, 即用户在一个平台上最多可以选择16中支付方式,这是足够的。

4. 支付密码:按照手机短信验证码6个10进制字符,最大999,999=0x‭F423F‬计算,5个十六进制字符刚好。

总共需要2+8+1+5=16个,刚好和调查的结果一样。

所以,条码如果是明文格式,应该是下面的顺序人人都能读懂: 

支付平台用户ID支付方式支付密码十六进制条码123456789ABCDEF01234,5678,9ABC,DEF0

五、支付原理(流程)

六、离线支付

根据支付流程图,只要手机的系统时间和服务器系统时间同步,各自生成的支付密码Key是一样的。另外,只要校验Key正确,服务器开始向银行申请扣款可以不需再和手机终端确认了,这说明这种方式理论上支持离线支付。

七、支付密码

这里的支付密码和短信验证码看起来都是一直变化的,但本质完全不一样。短信验证码可以是真随机数,它是由银行或支付系统服务器生成发送给手机的。而这里的支付密码其实是一个关于时间的函数:

Key=F(Seed,t)

Seed是注册时由支付系统分配给客户的一个种子(每个客户都不一样),它会传送给手机端存储起来,同时在服务器上备份。这个值很关键,决不能泄露。t是以分钟为单位以某一固定时刻为起始的增量时间(例如,从2010年1月1日0时0分起)。F是一个算法,同一支付系统的所有客户都一样。这个Key很像以前中国银行用的动态口令牌。不同的是中银动态口令牌是在银行前台办理,由工作人员将Key在离网方式下注入口令牌里,然后亲手交给用户,整个操作都是在封闭环境下进行的,可以保证Key不泄露。但是,手机支付系统的Key是由服务器通过网络传输给手机里的,没见过谁安装支付宝或微信要到营业厅去办理吧。所以,这个Key是在公开网络环境下传输的,理论上存在会被窃取的可能。这决定了这种支付方式的安全性肯定低于独立的动态口令牌或U盾。所以,在满足方便快捷的前提下只能小额支付。

八、小结:

1. 付款支付类似于中银e令【中银e令(动态口令牌)是一种内置电源、密码生成芯片和显示屏,根据专门的算法,每隔一定时间自动更新动态口令的专用硬件。基于该动态密码技术的系统又称一次一密(OTP)系统,即用户的身份验证密码是变化的,密码在使用过一次后就失效,下次使用时的密码是完全不同的新密码。作为一种重要的双因素认证工具,动态口令牌被广泛地运用于安全认证领域。动态口令牌可以提升网上银行的登录和交易安全。】支付方式,将手机当成e令硬件。

2.手机里的Seed和中银e令的Seed分配方式完全不一样,这决定了它的安全性比中银e令要低,只能小额支付。

3.付款码里除了类似中银e令的动态密码,还有客户ID,付款银行信息。这些信息足以让支付系统在后台和银行交易,从而实现小额安全条件下的快捷支付。

4.由于Seed可以离线同步生成,所以可以实现离线支付。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3